package com.study.map.service;

import com.study.map.dto.ReGeoRequest;
import com.study.map.dto.ReGeoResponse;
import com.study.map.exception.MapServiceException;

/**
 * 逆地理编码服务接口
 * 提供经纬度坐标与地址相互转换的功能
 *
 * @author study
 * @date 2025-08-31
 */
public interface IReGeoService {

    /**
     * 逆地理编码：将经纬度坐标转换为地址
     *
     * @param request 逆地理编码请求参数
     * @return 逆地理编码结果
     * @throws MapServiceException 地图服务异常
     */
    ReGeoResponse reGeoCode(ReGeoRequest request) throws MapServiceException;

    /**
     * 逆地理编码：将经纬度坐标转换为地址
     *
     * @param location 经纬度坐标，格式：经度,纬度
     * @return 逆地理编码结果
     * @throws MapServiceException 地图服务异常
     */
    ReGeoResponse reGeoCode(String location) throws MapServiceException;

    /**
     * 逆地理编码：将经纬度坐标转换为地址
     *
     * @param longitude 经度
     * @param latitude 纬度
     * @return 逆地理编码结果
     * @throws MapServiceException 地图服务异常
     */
    ReGeoResponse reGeoCode(String longitude, String latitude) throws MapServiceException;
}